function JavaParser(source){
  this.initialize(source);
}
$JSI.extend(JavaParser,SourceParser);
//ECMAParser.prototype = new SourceParser();

JavaParser.prototype.keywordsRegexp = SourceParser.buildKeywordsRegexp(
["@interface","abstract","assert","boolean","break","byte","case","catch","char","class","const",
			"continue","default","do","double","else","enum","extends",
			"false","final","finally","float","for","goto","if","implements","import",
			"instanceof","int","interface","long","native","new","null",
			"package","private","protected","public","return",
			"short","static","strictfp","super","switch","synchronized","this","throw","throws","true",
			"transient","try","void","volatile","while"]
);

JavaParser.prototype.partitionsRegexp = SourceParser.buildPartitionsRegexp(
[
      "/\\*(?:[^\\*]|\\*[^/])*\\*/"      //muti-comment
      ,"//.*$"                    //single-comment
      ,"/(?:\\\\.|[^/\\n\\r])+/"  //regexp
      ,'"(?:\\\\.|[^"\\n\\r])*"'  //string
      ,"'(?:\\\\.|[^'\\n\\r])*'"  //string : char
      ,"\\b([\\d]+(\\.[\\d]+)?|0x[a-fA-F0-9]+)\\b"//number
      ,"@[\\u0024\\w]+\\b"
      //,"^\\s*#.*"             //process
]);
dp.sh.Brushes.Php = function()
{
	var keywords =	"and or xor __FILE__ __LINE__ array as break case " +
					"cfunction class const continue declare default die do echo else " +
					"elseif empty enddeclare endfor endforeach endif endswitch endwhile eval exit " +
					"extends for foreach function global if include include_once isset list " +
					"new old_function print require require_once return static switch unset use " +
					"var while __FUNCTION__ __CLASS__";

	this.regexList = [
		{ regex: new RegExp("//.*$", "gm"),							css: "comment" },			// one line comments
		{ regex: new RegExp("/\\*[\\s\\S]*?\\*/", "g"),				css: "comment" },			// multiline comments
		{ regex: new RegExp('"(?:[^"\n]|[\"])*?"', "g"),			css: "string" },			// double quoted strings
		{ regex: new RegExp("'(?:[^'\n]|[\'])*?'", "g"),			css: "string" },			// single quoted strings
		{ regex: new RegExp("\\$\\w+", "g"),						css: "vars" },				// variables
		{ regex: new RegExp(this.GetKeywords(keywords), "gm"),		css: "keyword" }			// keyword
		];

	this.CssClass = "dp-c";
}

dp.sh.Brushes.Php.prototype	= new dp.sh.Highlighter();
dp.sh.Brushes.Php.Aliases	= ["php"];
